<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // ES6之前的函数定义方式(早期函数参数默认值的定义方式)
        function calc(a,b){
            // if(!a){
            //     a=0;
            // }
            // if(!b){
            //     b=0;
            // }

            a=a||0;
            b=b||0;

            var sum=a+b;
            console.log(sum);
        }
        calc(300,NaN);


        // ES6中提供函数定义形参时的默认值赋值语法
        function show(x,y="我是默认值"){
            console.log(x,y);
        }
        show(100,200);//优先传递的实参
        show(1000);//没有传值使用默认值

        function calcSum(){
            return 100+300;
        }

        // ES6中形参的默认值可以赋值为函数调用之后返回值
        // es6中形参默认值是在该函数被调用时候才确定
        // 函数形参设置了默认值，并且有对应的实参，以实参优先
        function show2(a=calcSum()){
            console.log(a);
        }
        show2();


        var user={
            name:"tom",
            age:20
        };
        var user2={
            name:"cici"
        };

        // function show3({name,age}={age:18}){
        // function show3({name,age=21}){   //{name,age=21}=undefined
        function show3({name,age=21}={}){
            console.log(name,age);
        }
        // show3(user);
        show3();
    </script>
</head>
<body>
    
</body>
</html>